// 和用户相关的路由地址 
const express = require("express");
// const path = require('path');
let router = express.Router();
let {uploadimg} = require('../util');
const userModel = require('../models/userModel');
const md5 = require('md5'); // 加密密码
// 1.安装 formidable 模块
// 2.引入 formidable 模块
// const formidable = require('formidable');
// // 3.实例化且配置 formidable 模块
// let form = new formidable.IncomingForm({
//     uploadDir:path.resolve(process.cwd(),'./static'), // 上传文件存储的路径
//     keepExtensions:true // 保持之前上传文件的后缀名称
// });
// 4.通过 formidable 格式化 数据和文件；

router.get("/getdata",async (req,res)=>{
    // 获取用户信息


    try {
        // 后端的分页逻辑
        // 一、计算页码 ， 把页码传给前端  。

        let usersData = await userModel.find();
        // 总数据的条数
        let totalCount = usersData.length;
        // 每页显示的条数 
        let perpage = 3;

        // 计算页码 ；
        let pageCount = Math.ceil( totalCount/perpage);
    //    console.log(pageCount);


    // 根据前端传递的 页码返还对应的数据
    // 接收 前端传递的页码；
     let {p}  = req.query;   // 当前的页码；
        console.log(p);
    // 根据页码 查询对应的数据
    let filterData = await userModel.find().skip((p-1)*perpage).limit(perpage);

        res.json({
            info: "获取用户信息成功",
            pageCount,
            status: 1,
            users: filterData
        })
    } catch (err) {
        res.json({
            info: "获取用户信息失败",
            status: 0,
            err
        })
    }
})

// 接收前端提交过来的数据和文件
router.post("/adduser",async (req,res)=>{
    console.log(req.body);
    // 可以通过 from的parse方法 格式化req里的数据和文件；
    // err ：是否有错误
    // fields ： 数据的字段
    // files ： 上传文件的信息
    try{
        let reslut = await uploadimg(req);
        console.log(reslut);
        reslut.pwd = md5(reslut.pwd);
        reslut.time = new Date().toLocaleDateString();
        console.log(reslut);
     //    把密码加密之后添加到数据库
        let resobj =  await userModel.create(reslut);
        console.log(resobj);
        res.json({
            info:"添加用户成功",
            status:1
        })
    }catch(err){
        res.json({
            info:"添加用户失败",
            status:0,
            err
        })
    }
})

// 删除用户信息
router.delete("/deluser", async (req, res) => {
    // 获取delete 传递过来的id数据
    let { _id } = req.query;
    console.log(_id);
    try {
        // 通过 id 删除 数据库里对应的数据
        let resobj = await userModel.deleteOne({ _id });
        console.log(resobj);
        res.json({
            info: "删除成功",
            status: 1,
            resobj
        })
    }catch(err){
        res.json({
            info: "删除失败",
            status: 0,
            err
        })
    }

})
module.exports = router;